package com.bqmart.tool.constant;

import lombok.AllArgsConstructor;

/**
 * 功能 :
 * 1.消息队列业务标识
 * 2.每一个需要发消息的业务,都需要在这里定义常量
 * 3.同时申请对应的消息需要的配置(topic/tag/pid/cid)
 *
 *
 * 注意:
 * 1.业务编码,是硬编码,是调用方和被调用方,共同遵守的规则
 * 2.通过这个规则,可以获取到消息发送者对象
 * 3.可以获取到,消息发送者的topic和productid
 * @author : Bruce(刘正航) 上午10:27 2018/3/23
 */
@AllArgsConstructor
public enum MQServiceCode {

    /**云采消息队列-订单流程-订单状态完成**/
    YC_PUSH_ORDER_TO_YC,

    /**倍全消息队列-推送库存变动信息给云采**/
    BQ_PUSH_STOCK_TO_YC,

    /**倍全消息队列-推送库存变动信息给POS**/
    BQ_PUSH_STOCK_TO_POS,

    /**倍全消息队列-推送订单变动信息给POS**/
    BQ_PUSH_ORDER_TO_POS,

    /**倍全消息队列-推送订单变动信息给增值服务**/
    BQ_PUSH_ORDER_TO_VAS,

    /**倍全消息队列-推送分类变动信息给云采 -- 暂时没有启用**/
    BQ_PUSH_CATE_TO_YC,

    /**倍全消息队列-推送商品信息给POS**/
    BQ_PUSH_GOODS_TO_POS,

    /**云采消息队列-云采商品信息solr更新消息**/
    CLOUD_GOODS_SOLR_UPDATE,

    /**云采消息队列-测试消息队列**/
    YC_PUSH_TEST_INFO,

    CID_TRADING_BTC_USDT_FCOIN_HITBTC,
    CID_TRADING_BTC_USDT_FCOIN_HUOBI,
    CID_TRADING_BTC_USDT_FCOIN_QUOINEX,
    CID_TRADING_BTC_USDT_FCOIN_BITSTAMP,
    CID_TRADING_BTC_USDT_HITBTC_FCOIN,
    CID_TRADING_BTC_USDT_HITBTC_HUOBI,
    CID_TRADING_BTC_USDT_HITBTC_QUOINEX,
    CID_TRADING_BTC_USDT_HITBTC_BITSTAMP,
    CID_TRADING_BTC_USDT_HUOBI_FCOIN,
    CID_TRADING_BTC_USDT_HUOBI_HITBTC,
    CID_TRADING_BTC_USDT_HUOBI_QUOINEX,
    CID_TRADING_BTC_USDT_HUOBI_BITSTAMP,
    CID_TRADING_BTC_USDT_QUOINEX_FCOIN,
    CID_TRADING_BTC_USDT_QUOINEX_HITBTC,
    CID_TRADING_BTC_USDT_QUOINEX_HUOBI,
    CID_TRADING_BTC_USDT_QUOINEX_BITSTAMP,
    CID_TRADING_BTC_USDT_BITSTAMP_FCOIN,
    CID_TRADING_BTC_USDT_BITSTAMP_HITBTC,
    CID_TRADING_BTC_USDT_BITSTAMP_QUOINEX,
    CID_TRADING_BTC_USDT_BITSTAMP_HUOBI,

    CID_TRADING_ETH_USDT_FCOIN_HITBTC,
    CID_TRADING_ETH_USDT_FCOIN_HUOBI,
    CID_TRADING_ETH_USDT_FCOIN_QUOINEX,
    CID_TRADING_ETH_USDT_FCOIN_BITSTAMP,
    CID_TRADING_ETH_USDT_HITBTC_FCOIN,
    CID_TRADING_ETH_USDT_HITBTC_HUOBI,
    CID_TRADING_ETH_USDT_HITBTC_QUOINEX,
    CID_TRADING_ETH_USDT_HITBTC_BITSTAMP,
    CID_TRADING_ETH_USDT_HUOBI_FCOIN,
    CID_TRADING_ETH_USDT_HUOBI_HITBTC,
    CID_TRADING_ETH_USDT_HUOBI_QUOINEX,
    CID_TRADING_ETH_USDT_HUOBI_BITSTAMP,
    CID_TRADING_ETH_USDT_QUOINEX_FCOIN,
    CID_TRADING_ETH_USDT_QUOINEX_HITBTC,
    CID_TRADING_ETH_USDT_QUOINEX_HUOBI,
    CID_TRADING_ETH_USDT_QUOINEX_BITSTAMP,
    CID_TRADING_ETH_USDT_BITSTAMP_FCOIN,
    CID_TRADING_ETH_USDT_BITSTAMP_HITBTC,
    CID_TRADING_ETH_USDT_BITSTAMP_QUOINEX,
    CID_TRADING_ETH_USDT_BITSTAMP_HUOBI,

    CID_TRADING_ETH_BTC_FCOIN_HITBTC,
    CID_TRADING_ETH_BTC_FCOIN_HUOBI,
    CID_TRADING_ETH_BTC_FCOIN_QUOINEX,
    CID_TRADING_ETH_BTC_FCOIN_BITSTAMP,
    CID_TRADING_ETH_BTC_HITBTC_FCOIN,
    CID_TRADING_ETH_BTC_HITBTC_HUOBI,
    CID_TRADING_ETH_BTC_HITBTC_QUOINEX,
    CID_TRADING_ETH_BTC_HITBTC_BITSTAMP,
    CID_TRADING_ETH_BTC_HUOBI_FCOIN,
    CID_TRADING_ETH_BTC_HUOBI_HITBTC,
    CID_TRADING_ETH_BTC_HUOBI_QUOINEX,
    CID_TRADING_ETH_BTC_HUOBI_BITSTAMP,
    CID_TRADING_ETH_BTC_QUOINEX_FCOIN,
    CID_TRADING_ETH_BTC_QUOINEX_HITBTC,
    CID_TRADING_ETH_BTC_QUOINEX_HUOBI,
    CID_TRADING_ETH_BTC_QUOINEX_BITSTAMP,
    CID_TRADING_ETH_BTC_BITSTAMP_FCOIN,
    CID_TRADING_ETH_BTC_BITSTAMP_HITBTC,
    CID_TRADING_ETH_BTC_BITSTAMP_QUOINEX,
    CID_TRADING_ETH_BTC_BITSTAMP_HUOBI,

    ;

    public static MQServiceCode search(String name){
        for (MQServiceCode serviceCode  : MQServiceCode.values() ) {
            if( serviceCode.name().equalsIgnoreCase(name) ){
                return serviceCode;
            }
            if( serviceCode.name().contains(name) ){
                return serviceCode;
            }
        }
        return null;
    }

}
